Conventionally, a prefetch function has been known as one function of a storage apparatus. A prefetch function is a function of learning an access pattern from a host apparatus (this is hereinafter referred to as the “sequential learning”), and, upon determining that the access pattern is a sequential access of continuously reading data from a continuous region, staging in advance the data stored in the next continuous region before the subsequent read request is given. Note that the term “staging” refers to the processing of reading data, which is stored in a storage device such as a hard disk device, into a buffer memory within a storage apparatus.
According to this kind of prefetch function, because it is possible to immediately send the requested data to the host apparatus when a read request of the next continuous region in the logical volume is given, the response performance of the overall storage apparatus can be improved.
In the foregoing case, a logical storage area (this is hereinafter referred to as the “logical volume”) that is provided by the storage apparatus to the host apparatus is divided into units referred to logical blocks of a predetermined size, and an address that is unique to each logical block (this is hereinafter referred to as the “logical block address (LBA)”) is assigned to the logical blocks for managing the logical blocks. A read request from the host apparatus to the storage apparatus is given by designating the logical block address of the front-end logical block of the storage area from which data is to be read, and the data length of the data to be read.
Thus, the sequential learning of the prefetch function described above is performed by observing the continuity of the logical block address of the storage area from which data is to be read. Specifically, when the logical block address of the back-end logical block of the storage area where the data read designated in the previous read request is to be performed, and the logical block address of the front-end logical block of the storage area where the data read designated in the current read request are continuous, it is determined that the read access from the host is a sequential access.
Note that PTL 1 discloses quantifying the continuity of data placement based on the cache hit ratio and determining the prefetch amount according to the quantified continuity and read access status in relation to the prefetch function of a storage apparatus.